// app.js
App({
  onLaunch: function() {
    if (!wx.cloud) {
      console.error('请使用 2.2.3 或以上的基础库以使用云能力');
    } else {
      wx.cloud.init({
        // env 参数说明：
        // env 参数决定接下来小程序发起的云开发调用（wx.cloud.xxx）会默认请求到哪个云环境的资源
        // 此处请填入环境 ID, 环境 ID 可通过云开发控制台获取
        // 如不填则使用默认环境（第一个创建的环境）
        env: 'cloud1',
        traceUser: true,
      });
    }

    this.globalData = {
      userInfo: null,
      userData: {
        coins: 0,
        level: 1,
        equipmentLevels: {
          egg: 1,
          bread: 1,
          coffee: 1
        }
      }
    };
    
    // 获取用户数据
    this.getUserData();
  },
  
  // 获取用户数据
  getUserData: function() {
    const that = this;
    wx.cloud.callFunction({
      name: 'updateUserData',
      data: {
        action: 'get'
      },
      success: res => {
        console.log('[云函数] [updateUserData] 获取用户数据成功: ', res.result);
        if (res.result && res.result.data) {
          that.globalData.userData = res.result.data;
        }
      },
      fail: err => {
        console.error('[云函数] [updateUserData] 调用失败', err);
      }
    });
  },
  
  // 更新用户数据
  updateUserData: function(data, callback) {
    const that = this;
    // 更新本地数据
    if (data) {
      Object.keys(data).forEach(key => {
        if (typeof data[key] === 'object' && data[key] !== null) {
          Object.keys(data[key]).forEach(subKey => {
            that.globalData.userData[key][subKey] = data[key][subKey];
          });
        } else {
          that.globalData.userData[key] = data[key];
        }
      });
    }
    
    // 更新云端数据
    wx.cloud.callFunction({
      name: 'updateUserData',
      data: {
        action: 'update',
        userData: that.globalData.userData
      },
      success: res => {
        console.log('[云函数] [updateUserData] 更新用户数据成功: ', res.result);
        if (callback && typeof callback === 'function') {
          callback(res.result);
        }
      },
      fail: err => {
        console.error('[云函数] [updateUserData] 调用失败', err);
      }
    });
  }
});